Method and apparatus for reliable data transmission and reception in data communication

ABSTRACT

This invention relates to techniques for timing control in transmission or reception of data units in data communication. To better use the resources in a transceiver, a timing parameter is repeatedly initiated and reassigned. Depending on how the data units being handled, the timing parameter can be used to control a transceiver to retry transmission of data units or purge data units.

FIELD OF INVENTION

This invention relates to techniques in the management of thetransmission and reception of data fragments. Particularly, thisinvention relates to the use of a single timer in the management oftransmitted or received data fragments.

BACKGROUND

In wireless transmission using a standard-based technology such asWiMAX, Automatic Repeat-reQuest (ARQ) is an error control method thatutilizes acknowledgements and timeouts to achieve reliable datatransmission and reception. Each connection is identified by aconnection identification (CID) and allows the transmission of multipleservice data units (SDUs). Each SDU may be fragmented or divided intoone or more data blocks (“BLKs”), where each BLK is identified by aBlock Sequence Number (BSN). During transmission, one or more datablocks are grouped into fragments (“FRs”) that are first transmitted insequence in the order of their BSN to the receiver to be reassembled.Each fragment can have one or more sequentially ordered data blocks thatare identified by their BSN.

An index may be used to identify a particular CID, SDU, FR, or BLKherein. Thus, for example, a CIDi may represent the ith connection, anSDUi may represent the ith service data unit, an FRi may represent theith fragment, and a BLKi may represent the ith data block.

An FR can be transmitted more than once if the transmitter does notreceive an acknowledgement before the retry timer for the block timesout. The first time a fragment is transmitted is referred to herein asthe first transmission for the fragment.

FIG. 1 is a representation of an example of an organization of the datafor transmission and the transmission sequence for the fragments asdefined by IEEE 802.16 for WiMAX. The data to be transmitted has “i”connections represented by the CID list, CID1 through CIDi. The firstconnection with CID1 has “k” SDUs represented by an SDU list, SDU1through SDUk. An SDU1 is fragmented into “m” fragments represented byFR1 through FRm while SDU2 is fragmented into “n” fragments representedby FR1 through FRn.

Each FR within an SDU is first transmitted sequentially. The FR indifferent SDUs is also first transmitted in the arriving order of theSDU. The dotted arrows in FIG. 1 illustrate the order that FRs are firsttransmitted. All FRs in SDU1 are first transmitted sequentially, andthen the data blocks in SDU2 are first transmitted sequentially. Thispattern continues for all the SDUs in a connection.

An acknowledgment is a message sent by the receiver to the transmitterto indicate that it has correctly received an FR or some FRs.

Typically, each FR to be transmitted has two timers, a life timer thatstarts when the FR is first transmitted and a retry timer that startsevery time the FR is transmitted. The life timeout value for the lifetimer is greater than the retry timeout value for the retry timer. Theretry timer controls the retransmission of an FR if the transmitter hasnot received the acknowledgement of that FR before the timeout of theretry timer. After an FR is transmitted, the transmitter waits for anacknowledgement of receipt of the FR from the receiver. If anacknowledgment is not received by the transmitter when the retry timertimes out, the retry timer is restarted and the transmitter re-transmitsthe FR. This process is repeated until the life timer for the FR timesout. When a life-timer of an FR times out, the transmitter sends adiscard message to the receiver for that particular FR. On receiving thediscard message, the receiver may discard the FR and all preceding FRs,i.e., FRs preceding in transmission sequence to the particular FR, andsend an acknowledgement message for the FR and all the proceeding FRs.After receiving the acknowledgement, the transmitter may then deletethat FR and the entire previous FRs. Since FRs in an SDU are firsttransmitted in time order, i.e., sequentially, and by the arriving orderof the SDUs, and all FRs have the same total lifetime value, the lifetimer for the FRs will time out at the same order that they are firsttransmitted. See IEEE Std 802.16-2004, IEEE Standard for Local andMetropolitan Area Networks—Part 16: Interface for Fixed BroadbandWireless Access Systems, October 2004, and IEEE P802.16e-2005, DraftIEEE Standard for Local and metropolitan area networks Part 16: AirInterface for Fixed and Mobile Broadband Wireless Access Systems,Amendment for Physical and Medium Access Control Layers for CombinedFixed and Mobile Operation in Licensed Bands, and Corrigendum 1,February 2006.

The number of timers in a system is a provisioned number in an operatingsystem. Each timer has a timer identification and a corresponding timerdata structure. To open or close a timer, the operating system mustundergo an inserting or deleting procedure from a timer link list thatis operating system specific. Therefore, a system that requires the useof a large number of timers is expensive, both in terms of data memoryand the operation of the timers.

Current methods for managing data blocks of fragments require the use oftwo timers for each data block or fragments. As defined by IEEE 802.16,the maximum number of fragments in the transmission window for a CIDconnection is 1024. Therefore, the maximum number of timers needed fortransmission is 2*1024 for each CID connection. The number of timersrequired for even few CID connections is therefore very large. Usingexisting methods, the operating system has to be prepared to reserve asignificant amount of its resource for the timers and their operations.

During reception, a fragment FRi, can be characterized by the following:the index “i”, its arrival sequence number that is an indication of itssequence of arrival; the start BSNi or BSNi of FRi, the lowest BSN ofthe BLKs of Fri; and, ti, the time of its arrival. Therefore, FR1 is thefirst fragment to arrive while FR2 is the second fragment to arrive. Forthe two fragments FRi and FRj, if j>i, then tj>ti. Although fragmentsare transmitted sequentially in the order of their start BSN, they donot necessarily arrive in order due to loss and retransmission. Thus,BSNi may or may not be lower than BSNj.

A receiver window for each connection is managed with a receiver bitmap,where each bit of the bitmap represents a BSN block and the bitmap isordered in the BSN sequence. Each bit is used to keep tracking whetherits corresponding block has been received by the receiver or not. Thewindow is defined by two pointers: one is a lower bound pointer and alsoreferred to as the window-start BSN, and the other pointer is an upperbound pointer and also referred to as the window-highest BSN. Thewindow-start BSN is the lower bound of the BSN of the receiver windowand points to the lowest BSN of the BLK that has not been received yet.All blocks with BSN less than the window-start BSN are considered tohave been correctly received. All currently received blocks have BSNsthat are lower than the window-highest BSN, where the window-highest BSNblock indicates an unreceived block with a BSN that is 1 higher than thehighest BSN of the currently received blocks.

FIG. 2 is an illustration of a receiver window with four receivedfragments, FR1 through FR4 that have arrived in that sequence. Thereceiver window bitmap indicates whether a block in the receiver windowhas been received or not, where “0” indicates that the data block withthat BSN has not been received, while “1” indicates that the block withthat BSN has been received. Different fragments can contain a differentnumber of data blocks. For example, FR1 contains 2 data blocks while FR3only has 1 data block. In FIG. 2, the window-start-BSN is “x”. BLKs mayarrive at the receiver out of order relative to their BSN as the resultof packet loss and retransmissions. In FIG. 2, FR1 that arrived firstcontains blocks with BSNs higher than the data blocks in FR2 which has alater arrival time.

At the beginning of the reception process, before the receipt of anydata, the window-start-BSN and the window-highest BSN both are at thelowest BSN as there are no received blocks in the window. As fragmentscontaining blocks are received, window-start BSN and window-highest BSNmay increase and start moving forward. Using the example in FIG. 2,after FR1 has been received, the window-start BSN remains the same butthe window-highest BSN is moved to x+7. These two pointers remain thesame as FR2 is received. However, the receipt of FR3 moves thewindow-highest BSN pointer to x+8.

Current methods using the IEEE 802.16 standard uses purge timers tomanage the moving forward of the receiver window if window-start BSN hasnot moved to a previously received block for some time period. Asillustrated in FIG. 2, a purge timer, as indicated by “pi” where i isthe index for the time, is started for each received fragment with astart BSN that is not equal to the window-start BSN. This purge timerfor this received fragment is closed when the window-start-BSN is movedforward past the start BSN for this fragment. A timer assigned to andstarted for FRi, is identified as “pi”. The timeout value for a purgetimer is PL, the purge life for a fragment. Using the current methods,as indicated in FIG. 2, each fragment in the receiver window can becharacterized by their arrival sequence number, start BSN, purge timer,and arrival time.

The window-start BSN is moved forward when one of two conditions is met.The first condition is the arrival of a received block in a receivedfragment with a BSN that matches the window-start BSN. The secondcondition is the timeout of a purge timer assigned to a receivedfragment in the receiver window. When the BSN of a received block in areceived fragment matches that of the window-start BSN, the window-startBSN will move forward to the BSN of the first unreceived block. When apurge timer assigned to a received fragment times out, the window-startBSN will move forward to the first un-received block after thatfragment. When the window-start-BSN moves forward, it will close thepurge timers opened or started and assigned to any fragments along itspath forward to the location of the new window-start-BSN.

There may be circumstances when one or more data blocks or datafragments are not received after a pre-determined number ofre-transmissions. In order to avoid the situation where the receiverwindow is stuck at these data blocks, the receiver window will purgethese unreceived blocks and continue with normal operation. That is,when a purge timer assigned to a fragment times out, the receiver willforce the lower bound of the receiver window to move forward past thefragment with the timed out purge timer and to the first unreceived datablock as if all fragments and data blocks, including the fragment withthe timed out purge timer, have been received.

Current methodology uses a purge timer for each fragment in the receiverwindow. See IEEE Std 802.16-2004, IEEE Standard for Local andMetropolitan Area Networks—Part 16: Interface for Fixed BroadbandWireless Access Systems, October 2004; and IEEE P802.16e-2005, DraftIEEE Standard for Local and metropolitan area networks Part 16: AirInterface for Fixed and Mobile Broadband Wireless Access Systems,Amendment for Physical and Medium Access Control Layers for CombinedFixed and Mobile Operation in Licensed Bands, and Corrigendum 1,February 2006.

The maximum window size of a connection, identified by a connectionidentification (“CID”) can reach 1024 as defined in IEEE Standard802.16. Therefore, the maximum number of purge timers needed for thereceiver is 1023 for each CID connection. This occurs when each fragmentin the connection has only one data block. If a few CID connections areconfigured, the number of purge timer required can be very large.

The number of timers in a system is a provisioned number in theoperating system. Each timer has a timer identification and a timer datastructure. For run time operations to open or close a timer and fortimeout procedures, the operating system has to go through an insertingand deleting procedure from a timer link list that is operating systemspecific. If there are a large number of purge timers, the operatingsystem has to preserve a significant amount of its resources for themanagement of these purge timers, their identification, data structure,and their operations. Therefore, a receiver that uses a lot of timers isexpensive, both for the data memory and the operation of the timers.

Due to the limitations of the prior art, it is therefore desirable tohave novel approaches or methods for the management of transmissionand/or receiving of fragments that would minimize the number of timersneeded.

SUMMARY OF INVENTION

An object of this invention is to provide methods for the management oftransmitted and/or received fragments that minimize the number of timersneeded and lowers memory and operating requirements on the operatingsystem.

Another object of this invention is to provide methods that scale wellfor different receiver window sizes and the number of CID connections.

This invention relates to methods for managing the transmission andreception of data fragments using a single timer. According to oneembodiment of the this invention, the methods include the followingsteps: processing said fragments sequentially, wherein each fragmenthaving a processing index that corresponds to the sequential processingof that fragment; processing each of said fragments until a terminationupon the meeting of a first pre-defined condition; assigning a timer toan un-terminated fragment having the lowest processing index; startingsaid timer having a timeout value; and running said timer until theprocessing of said un-terminated fragment is terminated.

An advantage of the methods of this invention is that only one timer isneeded for the management of received fragments and data blocks for eachCID connection and only one timer is needed for the management oftransmitted fragments.

Another advantage of the methods of this invention is that systems usingthese methods scale well for different receiver window sizes and numberof CID connections.

DESCRIPTION OF DRAWINGS

The foregoing and other objects, aspects and advantages of the inventionwill be better understood from the following detailed description ofpreferred embodiments of this invention when taken in conjunction withthe accompanying drawings in which:

FIG. 1 is a representation of the connections, SDUs, and data blocks ina prior art data transmission method and the sequence for the firsttransmission of the data fragments;

FIG. 2 is an illustration of a receiver window for received fragments ina prior art method for managing received fragments;

FIG. 3 is a representation of the method for managing fragments duringtransmission or reception using the preferred methods of this invention;

FIG. 4a is an example of a timer table for a preferred method of thisinvention;

FIG. 4b is an example of a retry timer table for a preferred method ofthis invention;

FIG. 5 is a flowchart illustration a preferred method of this inventionfor the transmission of a new fragment;

FIGS. 6a and 6b are flowcharts illustrating a preferred method of thisinvention for managing the transmitted fragments;

FIG. 7 is an illustration of a receiver window for received fragmentsusing the preferred methods of this invention for managing receivedfragments;

FIG. 8 is a flowchart illustrating a preferred method to move forwardthe window-start BSN;

FIG. 9 is an example of a purge block table for a preferred method ofthis invention;

FIG. 10 is another example of a purge block table for another preferredmethod of this invention;

FIG. 11 is a flowchart illustrating a preferred method of this inventionfor using one timer for receiving fragments;

FIG. 12 is a flowchart illustrating another preferred method of thisinvention for using one timer for receiving fragments;

FIG. 13 is an example of a timer management chain for a preferred methodof this invention;

FIGS. 14a and 14b are flowchart illustrating a preferred method of thisinvention using one timer and a timer management chain for transmittingfragments; and

FIG. 15 is a flow chart illustrating a preferred method of thisinvention using one timer and a timer management chain for receivingfragments.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Terminology

The following terminology may be used to describe the preferred methodsof this invention. However, they should not be interpreted in a mannerlimiting the scopes of the methods and embodiments of the presentinvention.

FR. A fragment or data fragment that may contain one or more BLK. If aparticular fragment has a processing index “i”, then the fragment maybereferred to as FRi.

BLK. A block or data block. Each BLK is characterized by a blocksequence number (“BSN”).

Start BSN. The lowest BSN for the BLKS in an FR. Start BSNi is thestart-BSN for FRi.

Transceiving. Either transmitting or receiving.

Processing Index (“i”). An index for referencing the sequential order oftransmission or reception for an FRi.

Transmission Index (“i”). An index referencing the sequential order oftransmission for Fri.

Reception Index (“i”). An index referencing the sequential order ofreception.

Processing Time (“ti”). ti may be referred to as the initial processingtime for a fragment Fri. For transmission, this may be the transmissiontime for an FRi. For reception, this may be the reception or arrivaltime for the FRi.

Retry Timer. A timer that may be used during transmission.

Purge Timer. A timer that may be used during reception.

Retry Life (“RL”). RL may be referred to as the length of time betweenthe transmission of an FR and its re-transmission.

Purge Life (“PL”). A length of time between the reception or arrival ofan FR and its purging.

Fragment Life (“FL”). A length of time for an FR before it isretransmitted or purged. Fragment life is not the same as the totallifetime value for a fragment as the total lifetime value means the sumof all the fragment lives for all transmission and re-transmissions ofthe fragment.

Assignment Time (“t”). An assignment and starting of the timer.

Current Time. A time that a particular action under discussion isoccurring or have just occurred. For example, if an FR is retransmittedor has just been retransmitted, then the current time is the processingtime for that FR. In another example, if a timer is being assigned orhave just been assigned to a fragment, then the current time is theassignment time.

Unterminated FR. An un-terminated FR may be an FR whose processing hasnot terminated.

Acknowledged FR. An FR that has received an acknowledgement for any BLKin that FR. An FR is acknowledged if it has received an acknowledgementof receipt for any BLK in that FR.

Deleted Fragment. An FR that is deleted.

Negative-Acknowledged FR. An FR that has received anegative-acknowledgement. An FR is negative-acknowledged if it hasreceived a negative-acknowledgement of receipt for any BLK in thatfragment.

Unacknowledged FR. An FR that has not received anegative-acknowledgement or an acknowledgement.

Effective Entry. The entry in a R_T table or a P_T that has anunterminated FR.

TMC. A TMC is a timer management chain.

Individual Fragment Controller. An individual Fragment Controllercontains the information associated with a particular individual FR. Ifthe FR is represented as FRi where i is the processing index for thatFR, then the individual Fragment Controller may be represented as FCi.

Header Node. The first node in a timer management chain.

Preferred Methods for the Transmission or Reception of Fragments

The presently preferred methods of the present invention use a singletimer for the management of the transmission or reception of datafragments, where each of the data fragments contains one or more datablocks. The methods may include the following steps:

initiating the processing of the FRs. For transmission, this step mayinvolve the transmission of FRs while for reception, this step mayinvolve the receiving or arriving of FRs;

noting the sequential order for the initiating of the processing of saidFRs. The sequential order for the transmission or reception of FRs isprovided. The sequential order for initiating the processing may beindicated by a processing index. This processing index may be referredas a transmission index during transmission and may be referred to as areception index during reception;

processing each of the FRs until the processing is terminated;

during the processing of the FRs, assigning the one timer that is beingused either for transmission or reception to the un-terminated FR thathas the lowest processing index at the assignment time;

starting said timer;

running said timer assigned to the fragment having the lowest processingindex order until the processing for that FR is terminated; and

repeating the assigning, starting, and running steps by assigning thetimer to the next un-terminated FR having the lowest processing index,starting and running the timer until the processing of the nextun-terminated FR is terminated.

The processing of an FR terminates upon the meeting or satisfaction ofone or more predefined conditions (first pre-defined condition). Thisprocessing of an FRi may include the noting or storing identifyinginformation that characterizes FRi. For transmission, this informationmay include i, the transmission index for FRi; BSNi, its start-BSN; thelength of FRi, i.e., the number of BLKs it has; and, ti, the time oftransmission for FRi. For reception, this information may include i, thereception index for receiving the FRi, BSNi, its start-BSN, the lengthof FRi, i.e., the number of BLKs it has; and ti, the arrival orreception time. The processing may also include the checking to see ifany the processing time for any FR being processed is equal to or exceedthe FR life.

The timeout value is a function of the fragment life, the assignmenttime, and the processing time. For preferred embodiments, the timeoutvalue is FL−(t−ti), where FL is the fragment life, t is the assignmenttime and ti is the processing time. For transmission, the timeout valuefor the timer is a function of the retry life, the assignment time, andthe transmission time. In the preferred methods, the timeout valueduring transmission is RL−(t−ti) where ti is the transmission time.During the re-transmission of a fragment, if a timer is assigned to anFR that is being re-transmitted, the timeout value for that fragment FRimay be RL−(t−ti), where ti is the time that FRi is being re-transmitted.For reception, the timeout value for the timer is a function of thepurge life, the assignment time, and the reception time. For thepreferred methods, it may be PL−(t−ti). If a timer is assigned to aduplicate block that has been received during reception, the timeoutvalue for the timer may be PL−(t−ti), where ti is the reception time forthat duplicate fragment, not the reception time for the originalfragment.

During transmission, if the retry timer times out, the retry timer maybe restarted again until the total number of retries exceeds apre-determined value. For the preferred embodiments of this invention,after a retry timer times out, the FR assigned to the timer isre-transmitted. For the preferred embodiments of this invention, when anFR is re-transmitted, the processing of this fragment may be consideredagain to be initiated such that i, its transmission index, may be theindex referencing the sequential order for the re-transmission and notthe transmission index referencing the sequential order for the originaltransmission or any other previous re-transmission.

Similarly for reception, if a duplicate fragment is received, processingof this duplicate fragment may be considered to be initiated at the timeof receipt of the duplicate FR such that its reception index is theindex referencing the sequential order for the reception of thatduplicated fragment, and not the reception index for the reception ofthat original FR or the reception of any previously received duplicateFR.

The processing of an FR may be terminated upon the meeting of one ormore pre-defined conditions (first pre-defined conditions). If a timeris assigned to an FR, one of the pre-defined conditions for thetermination of the processing for that FR may be the time out of thetimer assigned to that FR. For transmission, the other pre-determinedconditions for the termination of the processing for an FR include: thereception of an acknowledgement of receipt for any BLK in that fragment;the deletion of any BLK in the fragment; and the receipt of anon-acknowledgement for a BLK in the fragment.

For reception, the other pre-determined conditions for the terminationof the processing for an FR include: the arrival of a duplicate fragmentfor that fragment; the moving of the window-start BSN for the receiverwindow such that the start-BSN for that FR is not within the receiverwindow, i.e., the start-BSN for that FR is less than or equal to (≦) tothe new window-start BSN.

The window-start BSN may be moved forward when one of two pre-definedconditions (second pre-defined conditions) is met. The first is thearrival of a received BLK in a received FR with a BSN that matches thewindow-start BSN. The second condition is the timeout of a purge timerassigned to a received FR in the receiver window. When the BSN of areceived BLK in a received FR matches that of the window-start BSN, thewindow-start BSN will move forward to the BSN of the first unreceivedBLK in the receiver window. When a purge timer assigned to a received FRtimes out, the window-start BSN will move forward to the firstun-received BLK with a BSN greater than the BSN of that received FR thathas timed out. Depending on the value of the new window-start BSN, thismay or may not terminate the processing of an FR. If the start-BSN of aprocessing FR is still greater than the new window-start BSN, i.e., ifthe FR is still within the receiver window, then the FR is notterminated. However, if the start-BSN of an FR is less than thenew-window-start BSN, i.e., if the FR is no-longer within the receiverwindow, then the FR is terminated.

FIG. 3 is an illustration of the preferred methods described above.While processing the FRs, the next un-terminated fragment having thelowest processing index is identified and the retry timer is assigned tothis un-terminated fragment and the timer is started. This timer remainswith the fragment until the conditions for the termination of this FR ismet. The timer is re-assigned and restarted as before. If no conditionfor the termination of the FR is met, then the processing continues.

In certain preferred methods of this invention, the information for themanagement timer and the identifying information for the fragments beingprocessed may be stored in the entries or storage locations of a timertable (T table) and/or a data structure such as a Fragment Controller.

An entry of the timer table may be used to record one or moreidentifying information of a fragment that may include: its identifyingaddress, its start address, its address in a data structure such as aFragment Controller. The data structure may contain other identifyinginformation for the fragment such as the start BSN for that FR, itsprocessing index of a function of its processing index, and an FRpointer that links or points from the data structure containing thefragment's identifying information to and from the entry for thatfragment.

Some of the identifying information for each FR is entered into the Ttable in accordance with and in sequence of their processing index. TheT table may contain pointers with each pointer pointing to and from theFR in the table to the set of information for that FR contained in theFragment Controller. The management information for each fragment FRiwith its processing index “i” is contained in the Fragment Controller.The Fragment Controller may also contain the start-BSNi and theprocessing time for the FR. FIG. 4a is an example of a timer table withpointers that links each entry for a fragment in the table with itscorresponding information in the fragment controller as indicated by thearrows pointing back and forth from the fragment controller to the timertable (T Table). In this example, the fragment controller contains thestart BSN and the processing index for each fragment.

The T table may be bounded by two indices, the T head index that pointsto the first un-terminated Fragment and the T tail index that points tothe first unoccupied entry in the T table. For example, see FIG. 4 a.

Since the entries in the T table are arranged according to theirprocessing index or as a function of their processing index and thefragment life of the FRs is the same, the FRs in the T table will timeout in the same order as their processing index. The one timer may thenbe first assigned to the first entry in the T table and started. If thistimer times out, the FR at this first entry may be re-processed again.For this re-processing, this start address and the pointer informationfor this FR will be logged, according to its new processing index orderbased upon the time of re-processing, as the last entry in the entry inthe T table where the T tail index pointed. The T tail index isincreased by one, to the next unoccupied entry in the T table. The Thead index is then moved to the next effective entry, i.e., the nextentry with an un-terminated FR. The timer is assigned to the FR in theentry for the new T head index, FRi, and restarted. The new timeoutvalue may be (RL−(t−ti) where t is the assignment time and ti is thetime of re-processing. The information relating to the assignment timeand the T tail index may be stored in the Fragment Controller.

If the processing of an FR that the timer is not assigned to isterminated because one of the pre-determined condition is met, the entryfor that timer may be removed from the T table by putting a NULL in thatFragment's current entry position.

A fragment is re-processed when the timer times out during transmissionand the FR is re-transmitted, or when a duplicate of an FR that has beenpreviously received is received again. Any fragment that is re-processed(also sometimes referred to as processed) has a processing index andinitial processing time, that reflects the re-transmission time or thetime for the arrival of a duplicate FR. For preferred embodiments wherea T table and a Fragment Controller are used to manage the fragmentinformation, the re-processing time and the T tail index information aresaved in the Fragment Controller, the address of this re-processed FR issaved in the entry of the T tail, and the T tail index is increased byone.

The T table and Fragment Controller are just one of many methods toimplement the preferred methods of this invention. Any algorithm thatcan identify the earliest un-terminated fragment and control theassignment of the timer according to the methods of this invention canbe used.

For example, in other preferred embodiments, a timer management chain(“TMC”) where the nodes in the chain are linked, preferablybi-directionally, may be used for the management of the timer. Each nodein the chain is associated with a particular fragment and the nodes maybe organized in the order of the processing index of their FR, i.e., theFR associated with the node. Each node contains the relevant informationfor the fragment, hereby referred to as the Individual FragmentController for that node and its FR. An Individual Fragment Controllermay be represented by FCi, where i is the processing index for thatparticular FR and may contain information such as the start BSN or theprocessing time. In the preferred embodiments where the nodes in thechain are organized in the order of the processing index, the first nodecontains FC1, the Individual Fragment Controller for FR1; the secondnode contains FC2, the Individual Fragment Controller for FR2; and thelast node in the chain contains the Individual Fragment Controller forthe FR with the highest processing index. FIG. 13 is an example of abi-directional TMC.

As seen in FIG. 13, when these chains are bi-directional, eachIndividual Fragment Controller has two pointers, one pointing to theprevious node, and the other pointing the next node. This enables theeasy removal of a node in the middle of the chain.

When a new FRj with a processing index of j is initially processed, itsprocessing time may be recorded in its Individual Fragment Controller,FCj, and a new node containing the FCj maybe added to the end of TMC. Ifthis node is the first in the chain, i.e., j=1, the timer is assigned toFR1.

Upon meeting of a first pre-defined condition that terminates theprocessing of an FR in the chain, the node for that FR is removed fromthe chain. If the FR is re-processed, e.g., if the fragment associatedwith the node is re-transmitted or a duplicate node is received, theinformation in the Individual Fragment Controller for this fragment maybe updated to reflect the new processing time and the new processingindex, and/or added or attached to the end of the chain. If the node forthis FR whose processing is terminated is the header node, i.e., thefirst node, after removal, the next node, the node with the next lowestprocessing index then becomes the header node. If the timer was assignedto the original header node, then, the timer is closed, and reassignedto the fragment for the new header node with a timeout value ofFL−(t−ti) where t is the new assignment time and ti is the processingtime for this fragment for the new header node.

Preferred Methods for Transmission of Fragments

The presently preferred methods of this invention utilizes only oneretry timer for the management of the transmission of FRs for each CIDconnection instead of the large number of retry timers needed if priorart methods of block and fragment management are used. The preferredmethods initially transmit the FRs in the sequential order of theirstart-BSN starting with the first FR of the first SDU. For each FR, thesequential order of transmission “i”, the start-BSN for that fragment,and the initial processing time, i.e., the transmission time, may benoted or stored. Therefore, initially, the processing index is areflection of the sequential order of the start-BSN of the Fragments.However, this may change during processing as some FRs may bere-transmitted while others may be acknowledged and thus have no needfor re-transmission. Therefore, in general the processing index may ormay not be a function of the start-BSN of an FR.

While processing during transmission, the one timer, the retry timer, isassigned to and started for the un-terminated FR having the lowestprocessing index. The retry life of a fragment expires and times outwhen the retry timer assigned to this fragment, i.e., the retry timerfor this fragment, times out. At the same time while continuing totransmit the FRs sequentially, the transmitter waits for thesatisfaction of one or more of the following conditions for thetransmission of that fragment to be terminated or concludes:

timing out of the retry timer if the retry timer is assigned to thatfragment;

the acknowledgement of that fragment;

the negative acknowledgement of that FR; or

the deletion of that FR.

After meeting one of the above conditions for the termination of theprocessing of an FR that a retry timer is assigned to, the transmittermay remove the acknowledged FR from its list of FRs for this SDU, alsoreferred to herein as an FR list.

In the preferred methods, when the processing of the FR that the retrytimer is assigned to has terminated, the retry timer is removed andreassigned to the next un-terminated FR having the lowest processingindex and restarted accordingly. The next un-terminated FR may or maynot be the next FR of the SDU as the next FR may be terminated becauseone of the pre-determined conditions for terminating the processing forthat next FR may have been met. For example, the second fragment mayhave been an acknowledged FR.

The timeout value for the retry timer for this next un-terminated FRiwith a processing index “i” is a function of t, the assignment time orthe time of assignment of the retry timer to the FR and the re-startingof the timer, RL, the retry life, and ti, the initial processing time orthe transmission time. Preferably, the timeout value is RL−(t−ti). Forexample, if the next un-terminated block is FR3 of SDU1 and t3 is theinitial transmission time for this FR3, the timeout value for the retrytimer for FR3 may be RL−(t−t3) since (t−t3) time has passed before sinceFR3 has been initially processed or transmitted. This process can berepeated for each un-terminated FR in each SDU for each CID connection.The transmission time of each FR and the sequential order of its initialprocessing or transmission may be saved, possibly in the data block'smanagement data structure.

In certain preferred methods of this invention, the information for themanagement of a retry timer table (R_T) table may be used to record anFR's start address, FR pointer, and the processing index or a functionof the processing index. The retry time related information may bestored in a retry timer table (R_T table) and the Fragment Controller.FIG. 4b is an illustration of a R-T Table and a Fragment Controller. InFIG. 4b , the start address and pointer (p) for each FR that istransmitted is entered into the R_T table in accordance with theirprocessing index. The R_T table contains pointers (indicated by arrows)with each pointer pointing from the FR in the table to the set ofinformation for that FR contained in the Fragment Controller. Themanagement information for each fragment FRi with its processing indexor transmission index, also sometimes referred to as its R_T index “i”is contained in the Fragment Controller. The Fragment Controller mayalso contain the start BSNi and ti. The R_T table is bound by twoindices, the R_T head index that points to the first un-terminatedfragment and the R-T tail index that points to the first unoccupiedentry in the R_T table.

Since the entries in the R_T table are arranged according to theirprocessing index or as a function of their processing index and theretry life of the FRs is the same, the FRs in the R_T table will timeout in the same order as their processing or R_T index. The one retrytimer will be first assigned to the first entry in the R_T table andstarted. If this timer times out, the FR at this first entry may bere-transmitted again. For this re-transmission, this start address andthe pointer information for this FR will be logged, according to its newprocessing index order based upon the time of re-transmission, as thelast entry in the entry in the R_T table where the R_T tail indexpointed. The R_T tail index is increased by one, to the next unoccupiedentry in the R_T table. The R_T head index is then moved to the nexteffective entry, i.e., the next entry with an un-terminated FR. Theretry timer is assigned to the FR in the entry for the new R_T headindex, FRi, and restarted. The new timeout value may be (RL−(t−ti) wheret is the assignment time and ti is the time of re-transmission. Theinformation relating to the assignment time and the R_T tail index maybe stored in the Fragment Controller.

If the processing of an FR that the timer is not assigned to isterminated because one of the pre-determined condition is met, the entryfor that timer may be removed from the R_T by putting a NULL pointer inthat fragment's current entry position since that fragment's FragmentController has that fragment's entry in the R_T table.

Any fragment that is re-transmitted has a processing index that reflectsthe re-transmission time. For the preferred embodiments, where a R_Ttable and a Fragment Controller are used to manage the fragmentinformation, the re-transmission time, R_T tail index information issaved in the Fragment Controller, the address of this FR's FragmentController is saved in the entry of the R_T tail, and the R_T tail indexis increased by one.

If a timer is to be closed and reassigned to the next un-terminated FRihaving the lowest processing index (“i”) and restarted, this new timertriggers a time-out value for the timer of RL−(t−ti), where t is theassignment time and ti is the initial processing time for FRi.

For the preferred embodiments where a R_T table and a FragmentController are used to manage the fragment information, when the timerattached to an FR times out and that fragment is re-transmitted, theinitial processing time for the timed out fragment, i.e., there-transmission time determines the processing time and thus the newprocessing index for this re-transmitted FR, the address of thisre-transmitted FR maybe be logged at the next unoccupied entry at thenext R_T tail index, the re-transmission and other relevant informationmay be saved in the Fragment Controller, and the R_T tail index isadjusted accordingly.

The next effective entry in the R_T table, if it exists, may be checkedto see if it has timed out. To check if a next entry exists or not, theR_T head index is increased by 1 and checked against the R_T tail index,if R_T head index =R_T tail index, then no entry exists. To check if anentry is effective, the entry is checked to see if any of the conditionsfor termination exists, if it does not, then the entry is effective.

If the current time, the time for checking whether an FR has timed out,is RL+ti, i.e., if the time of checking for FRi is greater than RL+ti,then FRi has timed out. If it has timed out, then the above describedprocedure for locating the next effective entry may be repeated. If ithas not timed out, then the re-try timer is assigned to thisun-terminated fragment and restarted. The flowchart for this process isillustrated in FIGS. 5 and 6.

As illustrated in FIGS. 5 and 6 a and 6 b, during transmission, thefollowing events may trigger the re-assignment or restarting of theretry timer:

A new FR is transmitted. The management information for this FR and itsprocessing index is noted or saved. If a retry timer has already beenstarted, then no other step may be needed. If no retry timer has beenopened, the retry timer may be assigned to this FR and started with atimeout value of RL, the retry life. In the preferred embodiments wherea R_T table and a Fragment Controller is used to managed the fragmentinformation, the transmission time, R_T tail index information is savedin the Fragment Controller, the address of this new FR is saved in theentry of the R_T tail, and the R_T tail index is increased by one. If noretry timer has been opened, i.e., if this fragment is entered as thefirst entry of the R_T table, then the retry timer is assigned to thisfragment and started where the assignment time is equal to thetransmission time. FIG. 5 illustrates this process.

The retry timer times out. The fragment that the retry timer is assignedto is re-transmitted that may follow the algorithm described above. Thetimer is reassigned to the next un-terminated FR having the lowestprocessing index, FRi and restarted that may follow the algorithmdescribed previously. For preferred methods that implement thisalgorithm using a R_T table, the next effective entry may be found asdescribed above and the retry timer is assigned to the FR at thiseffective entry, FRi. The timeout value for this retry timer is set asRL−(t−ti) where RL is the retry life, t is the assignment time and ti isthe transmission time for this FRi.

An FR is acknowledged or deleted. If the retry timer is assigned to thefragment, then the retry timer is closed and reassigned to the nextun-terminated fragment having the lowest processing index if such afragment exists. The algorithm for locating this next unterminatedfragment may follow the process for the re-assignment of the timer asdescribed above. In addition, any un-terminated FR with the current timeless than the sum of RL and ti may be retransmitted, and its newprocessing index and initial processing time noted accordingly. If theretry timer is not assigned to the acknowledged or deleted fragment, theFR maybe noted as terminated. For the preferred embodiments where a R_Ttable and a Fragment Controller is used to manage the fragmentinformation, if the FR that is acknowledged or deleted is the firstentry in the R_T table, that is, if that FR has a timer assigned, thenthe timer is closed and started for the next effective FR entry in theR_T table, if that FR exist. In addition, any FR with the current timesmaller than the sum of RL and ti may also be re-transmitted asdescribed above. If the FR is acknowledged or deleted is not the firstentry in the R_T table, NULL may be inserted in the entry indexed by theFragment Controller's R_T index to indicate that the processing of thatFR has terminated. The flowchart for this process is illustrated inFIGS. 6a and 6b

If a fragment is negative-acknowledged and if the retry timer isassigned to that fragment, then the FR may be processed as if it hadtimed out following the process described above for the processing of anFR with the assigned timer that has timed out. If a timer is notassigned to that negative-acknowledged FR, then it may be re-transmittedfollowing the same process for re-transmission as described above.

FIGS. 14a and 14b illustrate the preferred methods that use a timermanagement chain. When an FR is generated, it is transmitted andprocessed. Its processing time is recorded in its Individual FragmentController, and a node containing Individual Fragment Controller isadded at the end of the timer management chain. See FIG. 14b . If thenode for this FR is the header node, a retry timer is assigned andopened for this FR with a timeout value of RL.

When an FR is acknowledged or deleted, e.g., due to the fact that itstotal life time times out, the node associated with this FR is removedfrom the chain. If a retry timer is assigned to this FR, the timer isclosed, and reassigned to the fragment for the next node having the nextlowest processing index whose processing has not terminated, i.e., thenode having the next lowest processing index and whose FRi has not beenprocessed for more than RL+ti. This now becomes the header node with anFR having the lowest processing index. The new timeout value isRL−(t−ti) where t is the assignment time and ti is the processing timefor the FR in this new header node.

If the retry timer assigned to the FR for the header node times out, theFR is retransmitted. The time for the retransmission becomes the newprocessing time for this re-transmitted FR and is saved in theIndividual Fragment Controller for this FR. The processing index forthis FR may also be changed to reflect the new processing time. Giventhis change, the node associated with this Fragment is removed as theheader node and moved or reattached to the end of the chain.

Similarly, if the FR is negatively acknowledged, it may bere-transmitted. Upon re-transmission, the information in the IndividualFragment Controller may be updated for this FR to reflect there-transmission Fragment Controller and the node with the updatedIndividual Fragment Controller may be removed and re-attached as hereindiscussed. Similarly, if this node is the header node, then the timermay be re-assigned in the same manner as discussed previously to the FRfor the next node having the lowest processing index and whoseprocessing has not been terminated.

For transmission, the preferred methods of this invention use only onetimer, a retry timer for the management of fragments in a CIDconnection. It is an alternate method to the inventors' previousapplication “Methods of Management of Blocks and Block Life TimerResource” having an application Ser. No. 11/778,583, where methods ofusing one life timer but multiple retry timers were disclosed.Therefore, the preferred methods not only reduce the number of thetimers and therefore the timer resource but also complexity of theprocessing of the timers such as timer opening, deleting and timeoutprocessing. This timer resource saving is significant, for bothsubscriber devices and base stations that service multiple user devicessimultaneously.

Preferred Methods for the Reception of Fragments

Other presently preferred methods of the present invention uses only onetimer, a purge timer for the management of received fragments for eachCID connection. The purge timer may be assigned to and started for theearliest arrived fragment in the receiver window. FIG. 7 is an exampleof a receiver window where 4 FRs, FR1 through FR4, have been received.Using the methods of this invention, each received fragment FRi may becharacterized by “i”, the reception index, ti, its initial processingtime, also referred herein as its arrival or reception time, and itsstart-BSN. Only the earliest arrived fragment within the receiver window(the unterminated fragment having the lowest processing or receptionindex) is assigned the single purge timer which is started after itsfirst assignment. For the example illustrated in FIG. 7, the earliestarrived FR is FR1.

For the preferred methods of this invention, the timer assigned to anFRi is closed and reassigned to a new FR when the processing of FRi isterminated. For the preferred methods of reception, the processing of anFRi is terminated upon the meeting of one of three conditions. The firstis the time out of the purge timer assigned to that fragment FRi. Thesecond is the moving of the receiver window in which the one or moreBLKS within FRi are not in the receiver window. The third is thereception of a duplicate of FRi.

The pre-defined conditions (second pre-defined conditions) for changingthe lower bound for the receiver window, i.e., the moving forward of thewindow-start BSN is similar to current methods. The window-start BSN ismoved forward when one of two conditions is met. The first is thearrival of a received BLK in a received fragment with a BSN that matchesthe window-start BSN. The second is the timeout of the purge timerassigned to a received fragment in the receiver window. FIG. 8 is anillustration of this process.

When the BSN of a received block in a received fragment matches that ofthe window-start BSN, the window-start BSN will move forward to the BSNof the first unreceived block and be assigned as the new window-startBSN. When the window-start-BSN moves forward, it will close the purgetimer if the purge timer is assigned to a fragment along its pathforward to the new window-start-BSN. That is, when the new window-startBSN is greater than the start-BSN of the fragment that the purge timeris assigned to, this purge timer may be stopped and be reassigned toanother fragment that is within the new receiver window.

When the purge timer assigned to a fragment in the receiver window timesout, the receiver will force the lower bound of the receiver window tomove forward past the fragment with the timed out purge timer to thefirst unreceived BLK as if all FRs and BLKs, including the FR with thetimed out purge timer, have been received. The purge timer is thenassigned to the earliest arrived FR, i.e., the FR having the lowestreception index, within the new receiver window. For the example in FIG.7, if the purge timer assigned to FR1 times out, then the window-startBSN may be moved forward to the x+8 and the purge timer may be assignedto FR4, the earliest arrived fragment or the un-terminated fragmenthaving the lost processing index within the new bounds of the receiverwindow.

For the methods of this invention, when the lower bound for the receiverwindow moves, i.e., when the window-start BSN is moved forward, if thepurge timer is assigned to a fragment that is in the path to the newwindow-start BSN, the purge timer would be closed and would be restartedfor a fragment within the new bounds of the new receiver window. If thepurge timer is not closed, i.e., it is still within the new bounds forthe receiver window, then the purge timer remains and continues until ittimes out or is closed when the receiver window moves. If the purgetimer is closed because of the moving forward of the window-start-BSN,then, the purge timer may be assigned to a new FR within the window andre-started. The preferred methods identify the earliest arrived fragmentwithin the window, assign the purge timer to this fragment, and restartthe purge timer for this fragment with a timeout value of (PL−(t−ti))where t is the time of the assignment, and ti is the arrival time(processing time). PL, the purge life for the fragments in theconnection, is a preconfigured value for the fragments in the connectionand is the purge time for a fragment assigned to the purge timer. Since(t−ti) time has already passed at the time of the assignment of thepurge timer, the timeout value for the purge timer is (PL−(t−ti)) suchthat the purge timer times out at the end of the fragment purge time.

In one preferred method, to emulate the prior art purge timers for allthe received fragments such that only one purge timer is used, eachfragment's start BSN and arrival time are saved as an entry in a PurgeBlock (PB) table in the order of its arrival sequence (processing time).Thus, a received fragment is entered as an entry in the PB table. Anearlier entry has an arrival time that is earlier than the arrival timeof a later entry. FIG. 9 is an example of a PB table. A purge timer isalways assigned and started for the first entry in this table. If thefirst entry is the fragment FRi, then the purge timer may have a timeoutvalue of PL−(t−ti), where PL is the fragment life or fragment purge lifefor the fragments in the connection, t is the time of assignment of thepurge timer, and ti is the arrival time of FRi. The PB head indexinitially points to the first entry. A PB tail index points to the emptyentry after the entry of the latest arrived fragment. There is no morereceived fragments when the PB head index equals to the PB tail index.

Once the lower bound of the receiver window is determined to be changed,i.e., when the window-start BSN moves forward past the first entry, thenext fragment to assign the purge timer is identified. One preferredmethod in using the PB table is to move the PB head index pointer to thenext effective entry, i.e., the next entry in the PB table that iswithin the receiver window that has the lowest processing or receptionindex.

To find the next effective entry, the next entry is found by increasingthe PB head index by 1. If the PB head index is equal to the PB tailindex, then there are no more entries or fragments and the processing iscompleted for all fragments. If not this is the fragment with the nextearliest arrival time. However, this processing of this fragment mayhave been terminated. The processing of this FR may have been previouslydetermined to be terminated as indicated by a “NULL” or otherindication. Even if there is no overt indication that the processing forthis FR has terminated, the FR still has to be examined to see if it hasbeen terminated. If the start BSN of the FR in this entry is greaterthan the window-start BSN, then the processing of this FR is notterminated and this entry is the next effective entry. If the start BSNof the FR in this entry is less than the new window-start BSN, thisentry is not within the receiver window and therefore the processing ofthe FR in this entry has been terminated. This FR is purged andtherefore, the next entry is located again by increasing PB head indexby one and examined. This process will be repeated until the nexteffective entry is located and the next earliest arrived fragment withinthe receiver window with a start BSN greater than the window-start BSNis found; or when there are no fragments left in the PB table. This nextearliest arrived fragment, referred to as FRi, is the entry in the PBtable as indicated by the PB head index. The purge timer is assigned tothis entry and it is started. If a fragment purge life is PL, since(t−ti) has passed since the block has been received, the timeout valuefor the purge timer may be set to (PL−(t−ti)) where ti is the arrivaltime of the FRi, t is the time of assignment and started. FIG. 11 is anillustration of the process for locating the next effective entry andassigning and starting a purge timer when the window-start BSN movesforward.

When a duplicated fragment is received, current methods using the IEEEstandard 802.16 that assigns a purge timer to every received fragmentrequire that a purge timer be assigned to this fragment with the laterarrival time. In the preferred methods of this invention, when aduplicate fragment is received, the processing of the original FR ofthis duplicated FR is terminated. In the preferred methods where a PBtable is used for implementation, the entry for the terminated originalfragment may be indicated with a “NULL” or other indication.

If the purge timer is assigned to the original of this duplicate FR. Thepurge timer is closed and reassigned to the next un-terminated FR havingthe lowest processing or reception index using the methods describedabove.

The duplicated fragment may have a processing index or reception indexthat reflects the arrival or processing time for this duplicated FR. Forpreferred embodiments that use the PB table to implement the methods ofthis invention, a new entry is made into the PB table with a newprocessing index that is logged at the tail entry in the PB table andthe PB tail index is increased by 1.

If the purge timer is opened for the earlier arrived fragment of thisduplicated block, it may be stopped and the purge timer is reassigned tothe next entry in the PB table. In FIG. 11 where a preferred method forlocating the earliest arrived fragment is illustrated, after the PB headindex is increased by one, if the new first entry is found to be a“NULL” entry, then, the PB head index is increased by one again tobypass this entry since the fragment that originally occupy this entryhas been entered as a new entry with a later arrival time.

In another embodiment, the PB table contains pointers where each pointerpointing to a set of information contained in the block data managementstructure (Fragment Controller) with respect to each received fragment.Such information for each fragment includes the fragment's start BSN,and a PB index, also referred to herein as the processing index or thereception index and in which points to this fragment's pointer in the PBtable, and its arrival time. Information in the block data managementstructure may be linked to the PB table by the PB index of therespective fragment entries.

FIG. 10 is an illustration of this PB table and the block datamanagement structure. The received fragments are entered as entries into the PB table. The index of an entry in respect to the PB table issaved in the block data management structure as the PB index, thereception index or the processing index. This PB index can serve as amechanism to enable or disable an entry in the PB table when there is aduplicative fragment. As before, a start pointer such as a PB head indexpointer points to the first entry, the earliest arrived fragment withinthe window, while the PB tail index points to the first empty entrybelow the latest arrived entry, where there may be one or more “NULL”entry above it. When the lower bound of the receiver window changes,i.e., when the window-start BSN move past the first entry, i.e., pastthe fragment that the purge timer was previously assigned to or thispurge timer times out, it becomes necessary to identify the nextfragment to assign the purge timer.

In using the PB table, the PB head index pointer is moved to the nextentry, the fragment with the next earliest arrival time in the table byincreasing the PB head index by 1. If the start BSN for the fragment inthis new entry is less than the window-start BSN, this new entry is notwithin the receiver window and will be purged by increasing the PB headindex by one. This process will be repeated until the earliest arrivedfragment within the receiver window with a start BSN greater than thewindow-start BSN, i.e., the unterminated FR having the lowest receptionor PB index, is found or, when there are no fragments left in the PBtable.

This earliest arrived fragment, referred to as FRi, is the first entryin the PB table as indicated by the PB head index. The purge timer isassigned to this new first entry and is started. If the purge life of afragment is PL, since (t−ti) has passed since the block has beenreceived, the timeout value for the purge timer may be set to(PL−(t−ti)), where ti is the arrival time, and t is the time ofassignment. FIG. 11 is an illustration of the process described abovefor assigning and starting a purge timer when the window-start BSN movesforward.

Upon receiving a duplicate fragment, the original entry to thatduplicate fragment is found and the original entry in the PB table ischanged to a “NULL” entry. If the PB head index moves to a “NULL” entry,this entry is disabled and the PB head index is moved to the next entryin the PB table. The duplicate fragment is entered as a new entry insequence according to the arrival time of that duplicate fragment.However, as shown in FIG. 10, the PB index for the original entry in theFragment Controller is updated to the index of the new entry (for thisduplicate fragment).

FIG. 12 illustrates a preferred method for the management of receiveddata and the purge timer based on the PB table and block data managementstructure one example of which is illustrated in FIG. 10.

If the start BSN of a received fragment is the same as the window startBSN, the window-start BSN is moved forward to the next unreceived block.An opened purge timer is closed if it is assigned to a fragment notwithin the new bounds of the window, for example, if the purge timer isassigned to a fragment with a start BSN that is lower than the newwindow-start BSN. The purge timer is then reassigned to the earliestarrived fragment within the new bounds of the window and restarted as ispreviously described and illustrated in FIG. 8. If the purge timer isassigned to a fragment that is still within the new bounds of thereceiver window bounded by the new window-start BSN, then the purgetimer remains assigned to that fragment and may not need to bereassigned.

If the purge timer assigned to a fragment times out, the window-startBSN is moved forward to the first unreceived fragment past the fragmentwith the timed out fragment. The purge timer is then reassigned to theearliest arrived fragment within the new bounds of the window andre-started as is previously described and illustrated in FIG. 8.

If the start BSN of a newly received fragment is not equal to thewindow-start BSN, the fragment is checked to determine if it is aduplicate fragment. If it is a duplicate fragment and the purge timer isnot assigned to the original of this duplicate fragment, the original isremoved such that its entry that is indexed by a PB index in the blockdata management structure in the PB table becomes a “NULL” entry and theduplicate fragment is logged as a new entry at the tail of the PB Table.If a purge timer is assigned to the original of this duplicate fragment,the purge timer is closed and reassigned to the earliest arrivedfragment within the window and restarted as described previously. Thearrival time and the new PB index for this duplicate fragment may alsobe saved in the block data management structure; the pointer for thestructure may be saved at the new entry pointed by the PB tail index;and the PB tail index may be updated by 1. If there are no fragmentswithin the receiver window other than the newly arrived duplicatedfragment, i.e., if the PB head index+1=PB tail index before the updatingof the block data management structure and pointer information, then thepurge timer is started for this newly arrived duplicated fragment with atimeout value of PL.

If the received fragment is not a duplicate, the relevant informationfor that fragment is entered into the block data management structureand the PB tail index and the structure's pointer in the PB tail indexare updated for that received fragment. If no purge timer has beenassigned or started within the window, the purge timer is started with atimeout value of PL, the life for that received fragment.

FIG. 15 illustrates the preferred methods for timer management when aTMC is used. When a new FR is received, the start BSN of that FR ischecked against the window-start BSN . When the start BSN of that FR isnot equal to the window-start BSN and this FR is not a duplicate ofanother received FR, its processing time, i.e., arrival time ti is savedin its Individual Fragment Controller and the node having the IndividualFragment Controller is added to the end or tail of the TMC. If this nodeis the header node, i.e., if no purge timer has been opened, then thepurge timer is assigned to the FR for this node with a timeout value ofPL.

If the start BSN of this FRi is the same as the window-start BSN, thewindow-start BSN may be moved forward to the first un-received BSNnumber. If the new window-start BSN is greater than the start BSN of theFR of the header node, then the processing of the FR of the header nodeis terminated. The purge timer is closed and the header node is movedfrom the TMC. If the start BSN of the FR in the new header node is lessthan the window-start BSN, then its processing is terminated and it isremoved from the head of the chain. This is repeated until window-startBSN is less than the start BSN of the FR of the header node or untilthere are no nodes left in the TMC. If an FR, referred to herein as FRi,in a header node with a start BSN greater than the window-start BSN andthe processing of FRi has not terminated, i.e., if the current time isgreater than PL−ti, then, the purge timer is assigned to that FR,referred to as FRi and restarted with a timeout value of PL−(t−ti) wheret is the assignment time.

If the start BSN of the received FR is not equal to the window-startBSN, but is a duplicate FR of a previously received FR, the IndividualFragment Controller for that previously received FR is removed from thechain and re-attached to the end or tail of the TMC. Its IndividualFragment Controller is updated to reflect the new processing time (thearrival time for the duplicate FR) and processing index. If a purgetimer was assigned to the previously received FR, the timer is closedand reassigned to the next header node whose processing has not beenterminated as described previously.

When the purge timer times out, the processing of the FR in the headernode is terminated, the window-start BSN may be moved forward pass theBSN of the FR of the header node to the first un-received BSN. Theheader node is removed from the TMC. If the new window-start BSN isgreater than the start BSN of the FR in the new header node, theprocessing of this the FR for this new header node is terminated andthis new header node may be removed from the TMC. As previouslydescribed, this procedure is repeated until the start BSN of an FR for aheader node is greater than the window-start BSN or until there are nomore nodes in the TMC. If such a header node is found, the purge timeris assigned to the FR, referred to as FRi, in the header node with atimeout value of PL−(t−ti).

While the present invention has been described with reference to certainpreferred methods, it is to be understood that the present invention isnot limited to such specific methods. Rather, it is the inventor'scontention that the invention be understood and construed in itsbroadest meaning as reflected by the following claims. Thus, theseclaims are to be understood as incorporating not only the preferredmethods described herein but all those other and further alterations andmodifications as would be apparent to those of ordinary skilled in theart.

What is claimed is:
 1. A method for reliable data transmission andreception in digital communication, the method comprising: processingdata units sequentially, wherein each of the data units includes aprocessing index to facilitate the data units to be processedsequentially; processing a data unit at a time until one of pre-definedconditions is met, wherein the pre-defined conditions include that atiming parameter assigned to the data unit is timed out or anacknowledgement of the data unit is received, wherein said processing adata unit includes: starting the timing parameter again until a totalnumber of retries to transmit the data unit exceeds a pre-determinedvalue, wherein the timing parameter times out during transmission of thedata unit; and retransmitting the data unit every time the timingparameter is started, wherein said retransmitting the data unit endswhen the timing parameter reaches a life timeout value for the dataunit.